The communications industry has developed a number of efficient throughput, wireless packet-based communication methodologies or protocols (such as IEEE standard 802.11a internet protocol) that are intended for use within an office or intra-building environment, where transmission distances are relatively short (e.g., on the order of one to several hundred feet). While these protocols work reasonably well for ‘nested’ or ‘quasi-nested’ local area networks (LANs), they are not readily suited for use with extended range applications (e.g., on the order of several tens of miles or more).
This latter type of environment suffers from the problem diagrammatically illustrated in FIG. 1, specifically the substantial transport delay that results from having to return an acknowledgement (ACK or NACK) transmission for each successively transmitted packet. (For example, the MAC acknowledgement layer of the above-referenced 802.11a protocol returns an ACK for each packet.) This problem is particularly noticeable in networks containing a large number of transmitters that must communicate over large distances with a reception/processing or relay site.
In accordance with the invention detailed in the above-referenced '467 application, this problem is effectively obviated by providing a limited acknowledgement-based wireless communication methodology that substantially increases the transport efficiency of packetized data transmissions to a ‘master’ data-reception site from a ‘slave’ data-sourcing or transmission site, geographically remote relative to the data-reception site. Rather than requiring the master receiver to return an acknowledgement message in reply to each packet received by an interrogated transmitter, the invention of the '467 application returns an acknowledgement only upon receipt of a plurality or group of packets, the number of which is known by the master and the slave.
When returning an acknowledgement message, the master identifies which, if any, packets of the group were not successfully received. These missing packets are then retransmitted by the slave transmitter in a manner dictated by the master, either immediately, or in response to a subsequent poll of that site by the data recipient. When retransmitted, the missing packets of the previous transmission are prepended to any new packets awaiting transmission.
FIG. 2 diagrammatically illustrates a simplified, non-limiting example of a geographically dispersed wireless communication system with which the invention disclosed in the '467 application may be employed. As shown therein, a plurality of transmitter sites 10-1, 10-2, 10-3, . . . , 10-N are dispersed over a prescribed data-gathering region, and are geographically remote relative to a data-recipient and processing site 20. By the phrase ‘geographically remote’ is meant a considerable wireless transmission distance (e.g., on the order of several to multiple tens of miles) relative to separations between the transmitter sites (which may be, but are not limited to, on the order of several to more than tens of feet apart).
Disposed at each transmitter site is an information source, shown as transducers 12-1, 12-2, 12-3, . . . , 12-N, which are respectively coupled to associated wireless transceiver units 13-1, 13-2, 13-3, . . . , 13-N. As a non-limiting example, the transducers may correspond to motion sensors, such as but not limited to acoustic transducers (e.g., geophones), optical sensors (e.g., infrared detectors), and the like, which are interfaced with supervisory and monitoring controllers 14-1, 14-2, 14-3, . . . , 14-N of their associated wireless transceiver units. The transceivers employed at the remote sites 10 and associated transceivers at the data-recipient site 20 may comprise conventional wireless transceiver units, such as those which are capable of operating at a data transport rate of 500 kbps or greater.
The remote site transceivers 13 serve as slave transmitter units, and are selectively polled by their associated master transceivers 21, which are interfaced with an associated data processing station 22, that may be co-located with the master transceivers or located at a separate facility. Alternatively, data-recipient site 20 may employ a single master transceiver that is operative to poll and collect information from the various slave transceivers at the remote sites. Communications between a slave transceiver and a master transceiver are performed as poll-acknowledgement communications, and may comprise system-associated communications, status-associated communications and data communications.
FIG. 3 diagrammatically illustrates the packet-handling architecture of a respective one of the remote site located, slave transceiver units 13, that implements the interrogated or polled transmitter portion of the wireless packetized communication mechanism of the '467 application. As shown therein, a slave transceiver includes an output buffer 301, which stores a group or plurality of packets intended for transmission to the data-recipient site. As a non-limiting example, a packet may be one kilobyte in length, and a packet group may comprise 150 packets, to realize a group size of 150 kbytes. Each packet contains a header field and a data field. The header field contains configuration parameters as well as variables used to process and control handling of the packet. The data field includes data to be transmitted, as may be derived from the transceiver's associated transducer. An input/output buffer 302 receives an interrogation packet (or Poll) from the data-recipient site.
Pursuant to the invention detailed in the '467 application, whenever an acknowledgement message is returned to a transmitter by the data-recipient transceiver, it identifies which packets of the group that were previously transmitted, if any, had not been successfully received. Rather than retransmit the entire group of packets, the interrogated transmitter transmits only the missing packets. For this purpose, the transmitter contains a resend buffer 303 and an associated resend matrix 304. The resend buffer 303 has a storage capacity of one group. It should be noted that the loss of all packets results in a retransmission of all the packets (Resend All). In such an instance, nothing is loaded in the resend buffer. The transmission of data is limited to one group of data, so that the largest number of Resends will be a group size of data. Since only a group amount of data packets can be sent in a single transmission sequence, then the largest amount of possible Resends is a group sized amount of packets.
The resend matrix 304 is shown as comprising a dual or ping-pong buffer that stores the identification of packets that were not received by the data-recipient transceiver during a previous transmission, as identified in the acknowledge message. Each packet identification (PID) is associated with an index to a packet in the resend buffer. Being configured as a ping-pong buffer enables the resend matrix to accommodate the identification of both missing packets of a previously transmitted group, as well as the identification of any packets missing from the new group.
FIG. 4 diagrammatically illustrates the packet-handling architecture of the data-recipient transceiver 21 to implement the receiver portion of the wireless packetized communication mechanism of the '467 application. As shown therein, the data recipient receiver includes an input or receive buffer 401, which stores all incoming data, and is sized to accommodate multiple groups of data being received from a transmitter site as it is selectively polled by a data-recipient transceiver. A respective one of the group sections of the receive buffer 401 includes a data buffer 402 and an associated resend matrix 403. Data buffer 402 has a storage capacity sufficient to accommodate the currently configured number of packets that make up a single group.
The header portion of each packet (which may contain configuration parameters and member variables as shown at 404) is not stored in the data buffer, but is processed at the reception of the packets. The resend matrix 403 stores the identification of any missing packets of a received group. In addition to handling incoming packet group transmissions, the receiver further includes a status buffer 405, which is a single packet in length and is used to store either status or System (dependent upon the requested type) information separate from received data. An output packet buffer 406 stores the contents of outgoing packets intended for the transmitter site.
FIG. 5 shows the manner in which the Improved Datagram Protocol or IDP packetized data transport mechanism of the '467 application may be interfaced with a standard, layered-protocol communication scheme. In particular, FIG. 5 shows the placement of an Improved Datagram Protocol or IDP layer 52 intermediate the application layer 51, which interfaces data, such as that from the transducers 12, and a user datagram protocol (UDP) transport layer 53. The UDP layer 52 is encapsulated on an internet protocol (IP) network layer 54, which is encapsulated on a data link layer comprised of an Ethernet 802.3 layer 55 or an 802.11 MAC layer 56. The physical layer corresponds to PHY layer 57.
Similarly, at the receiver (data-recipient site 20), an IDP layer 62 is interfaced with the application layer 61, which interfaces received sensor data to a downstream processing operator, and a UDP transport layer 63. The UDP layer 63 is encapsulated on an internet protocol (IP) network layer 64 which, in turn, is encapsulated on a data link layer comprised of an Ethernet 802.3 layer 65 or an 802.11 MAC layer 66. Again, the physical layer 67 corresponds to a PHY layer.
As pointed out briefly above, communications between a slave transceiver and a master transceiver may comprise system-associated communications, status-associated communications and data communications. The manner in which extended range, data communications are carried out for bulk data transport may be understood by reference to FIG. 6, which shows a data communication sequence that is conducted between a remote transmitter at a data sourcing site and a receiver at the data-recipient site.
In particular, FIG. 6 is a bulk data pipe flow diagram of a data communication sequence between a data transmitter and the data-recipient is initiated by an interrogation or polling message in the form of a Data-Poll packet 601 that is transmitted from the data recipient to a specifically polled transmitter. At the polled transmitter, the contents of the Data-Poll packet are captured in the transmitter's input/output buffer 302 for processing by the transceiver's communications controller. In response to the Data-Poll, the transmitter returns a poll acknowledgement message in the form of a Data Poll-Ack packet 602, which indicates the total number of packets currently awaiting transmission in transmit buffer 301. The receiver already has knowledge of any additional (missed or Resend) packets that are awaiting transmission in the transmitter's resend buffer 303 for a previous poll, since it will have identified those packets in a previous data transmission sequence associated with that poll. In may be assumed that there are no missing packets currently awaiting transmission. If Resend data did exist, it would be transmitted from the Resend buffer 303.
In response to the Data Poll-Ack packet 602, the receiver forwards a Data-Request packet 603 to the transmitter, the Data-Request packet indicating to the transmitter to send a group size of data. Namely, The Data-Request packet 603 only requests data, it does not indicate how many bytes are to be sent. The largest amount of data during a data transport message is the maximum capacity of a group of packets which, in the present example, is 150 packets (one kbyte each) corresponding to 150 kbytes. In response to the Data-Request packet 603, the transmitter transmits a group of data packets as a Data message 604 to the receiver.
At the data-recipient receiver, the data fields of the received group of packets are captured in the group's data buffer 302, while their header fields are processed. If any packets were not successfully received, they are tagged as such in the receiver's group specific resend matrix 303. The receiver then returns a data acknowledgement (Data-Ack) packet 605 to the transmitter. The header portion of the Data-Ack packet is used to indicate whether all of the data packets were received without error, or if one or more packets need to be retransmitted. If any packets need to be retransmitted, they are identified by encapsulating the PIDs of the Resend packets (as identified in the current unfilled groups resend matrix) in the data field of the Data-Ack packet 605.
A request to resend data may either identify which packets are to be resent or indicate that all packets with the exception of specifically enumerated packets are to be resent. The latter mechanism employs an error percentage configurable parameter (field) which identifies the percentage of packets that must be lost or failed to have been received in order to declare a catastrophic failure. The (Resend-All exception for any found Resend packets) capability is a configurable ON/OFF state parameter. If ON, then the Resends found are identified and are not to be resent. If OFF, then all the data is resent.
The header field of the Data-Ack packet 605 contains a Retransmit bit. The logical state of the Retransmit bit indicates whether the identified missing packets are to be immediately retransmitted, so as to effectively maintain an ongoing or ‘continuing’ transmission from the transmitter to the receiver, based upon a configurable percentage of valid data received in the last data communication sequence, or whether the transmitter is to wait for a further Data Poll packet from the receiver before retransmitting the missing packets). If the Retransmit bit is set (e.g., to a logical ‘1’), the transmitter immediately proceeds to transmit the next group of data packets to the receiver as it did in response to Send-Data packet 603, described above. As an alternative option, the transmitter may be placed in a “Waiting for Data Request” state. In this mode the receiver sends a Data request immediately following the data-ACK. In addition, this next group of packets is prepended with the requested missing packets. If the Retransmit bit is not asserted (e.g., a logical ‘0’), the transmitter must wait until the next Data Poll before transmitting.
The continuing data is a configurable parameter. It may be turned ON or OFF. When turned ON, the receiver knows how many packets are available at the transmitter from the previous Data Poll_ACK 602, so that the receiver can determine the maximum number of possible groups that can be obtained. This is readily accomplished by dividing the packets with the group size to determine the maximum number of groups available. The receiver therefore knows how many times to request data. The number of attempts may also be configurable, so that the receiver will selected the lesser of the two. The data must also be received within a certain percentage of error. The Continuing Data Percentage parameter is a configurable parameter and corresponds to the percentage of packets that must be received in order to allow continuing transmission.
In response to a Data Ack, the system begins preparation for the next data transmission, and the transmitter eliminates from the transmit buffer all packets that were not requested In the Data-Ack packet, and moves the packets that were identified as missing in the Data-Ack packet to the transmitter's resend buffer. The DATA_ACK packets are then processed through the Resend Matrix. Any packets that were not identified in the DATA_ACK packet 605, but were originally in the Resend Matrix are assumed to be found packets by the receiver. The index associated with each is then used to clear that packet from the Resend Buffer 303. This frees up this packet of information for new Resend Packets. Any Resends that were not found will have their PIDs and associated indices to the Resend Buffer moved to the next matrix in the Resend Matrix 403. Any new Resends will be added to the new Matrix with the associated index to where they were moved in the Resend Buffer. On the next poll all resend packets are prepended to the front of the next group. Any packet space remaining is filled with new data packets. The requested missing packets are treated as a new group, but the original packet identifications are retained.
In the event of a further poll or continuing data transmission, the transmitter proceeds as described above, by transmitting the requested group of identified missing packets first (as that group of packets has been loaded in the front end of the new group) followed by any new groups of packets. In the present example, if there were 15 resends, then after a Poll, the transmitter would first transmit the 15 resends as identified in the Resend Matrix. The transmitter would then transmit 150−15=135 new packets from the transmit buffer, thus completing a full 150 group size transmission sequence. It may be noted that the new group is only 135 packets in size. If there were more resends, the most that could occur would be a group size or 150 in the present example.
As shown in the system sequence diagram of FIG. 7 (used for upper layer application-to-application communications), in addition to conducting data transport communications, the invention of the '467 application provides for the request of system and status information from the receiver to the transmitter. The status is a protocol status, corresponding to a request for information that is specific to the protocol (namely, configurable items, such as packet size). System communication provides for system-to-system communications between the transmitter-associated application and the receiver's associated application. Status is a Status Poll with a Status Poll_Ack. The Data portion of the Status Ack packet contains the requested status parameters.
As illustrated in FIG. 7, in response to a system request 701, the receiver transmits a system Poll packet (step 702) to the transmitter. In response to the system Poll, the transmitter forwards (step 703) the contents of the system request to the associated application, which then returns the requested system information to the transmitter in step 704. This system information constitutes payload data for a System Poll-Ack packet 705, which is returned to the receiver. The return of system information is a pass/fail operation, and is indicated to the attendant program at the receiver at step 706. If system data is not received within a configurable period of time, the request will return an error to the application. If system data is received, then the application is informed that it is available. It is the responsibility of the application to read the buffer, as shown at step 707.
In addition to data and system sequence communications, the communication scheme of the '467 application provides a status sequence to collect protocol parameterized data, as shown in the status pipe flow sequence of FIG. 8. In response to a request for status at step 801, the receiver forwards a status Poll packet in step 802 to the transmitter. The transmitter then responds with a status poll acknowledgement in step 803. A status available indication is provided at step 804, so that the status buffer may be read at step 805.
Now although the limited acknowledgement-based communication mechanism detailed in the '467, described above, is very effective in increasing the transport efficiency of packetized data transmissions to a ‘master’ data-reception site from a ‘slave’ data-sourcing or transmission site, it does so by direct or point-to-point communications between the master data-recipient site and a relatively remote slave transmitter site. There may be occasions, however, where such a direct communication path is impossible or impractical, mandating the use of one or more intervening or relay sites between the data-sourcing site (original transmitter) and the data-recipient site (destination receiver). In this event it is imperative that the data relay mechanism not create a ‘bottleneck’, something which might happen if a relay site were to await for receipt of all packets of each group from the transmitter before forwarding the data to the downstream receiver.